package tv.acgn.advertisement.publish.service;

import org.springframework.stereotype.Service;
import tv.acgn.advertisement.publish.exception.AbstractAdPubException;
import tv.acgn.advertisement.publish.po.CreativePO;
import tv.acgn.advertisement.publish.vo.creative.CreativeRequestVO;
import tv.acgn.advertisement.publish.vo.creative.CreativeResponseVO;

/**
 * @author : junG
 * @program : advertisement-ad-pub-service
 * @description : 创意 业务接口
 * @date : 2019-05-27 00:02
 **/

@Service
public interface CreativeService {

    /**
     * <h2>新增创意</h2>
     *
     * @param requestVO [1]
     *
     * @return {@link CreativeResponseVO}
     *
     * @throws AbstractAdPubException 异常
     * @author junG
     * @description 新增创意
     * @date 0:21 2019/5/27
     */
    CreativeResponseVO addCreative(CreativeRequestVO requestVO) throws AbstractAdPubException;

    /**
     * <h2>获取创意</h2>
     *
     * @param creativeId [1]
     *
     * @return {@link CreativeResponseVO}
     *
     * @throws AbstractAdPubException 异常
     * @author junG
     * @description 根据创意识别码 获取创意
     * @date 0:22 2019/5/27
     */
    CreativePO getCreative(String creativeId) throws AbstractAdPubException;

    /**
     * <h2>删除创意</h2>
     *
     * @param creativeId [1]
     *
     * @return {@link CreativeResponseVO}
     *
     * @throws AbstractAdPubException 异常
     * @author junG
     * @description 根据创意识别码 删除创意
     * @date 0:23 2019/5/27
     */
    CreativeResponseVO deleteCreative(String creativeId) throws AbstractAdPubException;

    /**
     * <h2>变更创意</h2>
     *
     * @param requestVO [1]
     *
     * @return {@link CreativeResponseVO}
     *
     * @throws AbstractAdPubException 异常
     * @author junG
     * @description 变更创意 信息
     * @date 0:23 2019/5/27
     */
    CreativeResponseVO updateCreative(CreativeRequestVO requestVO) throws AbstractAdPubException;
}
